package client.test.singleton;

import java.net.MalformedURLException;
import java.rmi.ConnectException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import serveurChatRMI.rmi.interfaces.InterfaceServeurForum;

public class SingletonConnexion {

	
	String serveurName;
	InterfaceServeurForum serveur;
	String pseudo;
	
	private SingletonConnexion() {}
	
	
	/** Holder 
	 * Permet au singleton :
	 *   - De fonctionner correctement en environnement multithreade 
	 *   - De ne pas necessiter d'une synchronisation explicite
	 * */
	private static class SingletonHolder
	{		
		/** Instance unique non preinitialisee */
		private final static SingletonConnexion instance = new SingletonConnexion();
	}
	
	/** Point d'acc�s pour l'instance unique du singleton */
	public static SingletonConnexion getInstance()
	{
		return SingletonHolder.instance;
	}
	
	/** Parametrage de la connexion */
	public void setServeur(String serveurName)
	{
		this.serveurName=serveurName;
	}
	
	public InterfaceServeurForum getServeur() throws ConnectException, MalformedURLException, RemoteException, NotBoundException {

		try {
			serveur.ping();
		}
		catch (Exception e) {
			serveur = (InterfaceServeurForum) Naming.lookup(serveurName);
		}
		
		return serveur;
	}
	
	public String getPseudo(){
		return pseudo;
	}
	
	public void setPseudo(String pseudo){
		this.pseudo=pseudo;
	}
	
	
}
